package cn.shu.util;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;

/**
 * Created by 76062 on 2017/10/10.
 */
public class LocationUtils {

    /**
     * 在矩形内随机生成经纬度(1公里范围矩形内)
     * @param num
     * @param distance 米 (多少米范围内（矩形）)
     * @return
     */
    public static List<Double[]> randomLonLat(Double[] coords, int num, double distance) {
        Double lat = coords[0];
        Double lon = coords[1];
        List<Double[]> list = new ArrayList<Double[]>();
        //经度 每隔0.01度，距离相差约1000米；
        //纬度 每隔0.01度，距离相差约1113米；
        //经度每隔0.00001度，距离相差约1米；
        //最新经度 MaxLon： 最大经度   MinLat：最新纬度   MaxLat：最大纬度
        double unit = 0.00001;
        double MinLon = lon-distance*unit, MaxLon = lon+distance*unit, MinLat = lat-distance*unit, MaxLat=lat+distance*unit;
        Random random = new Random();

        for (int i = 0; i < num; i++) {
            BigDecimal dbLo = new BigDecimal(Math.random() * (MaxLon - MinLon) + MinLon);
            BigDecimal dbLat = new BigDecimal(Math.random() * (MaxLat - MinLat) + MinLat);
            String rlon = dbLo.setScale(6, BigDecimal.ROUND_HALF_UP).toString();// 小数后6位
            String rlat = dbLat.setScale(6, BigDecimal.ROUND_HALF_UP).toString();// 小数后6位
            list.add(new Double[]{Double.parseDouble(rlat), Double.parseDouble(rlon)});
            System.out.println(rlat+","+rlon);
        }

        return list;
    }
}
